《Android 基础(四十六)》 LayerDrawable & layer-list

介绍

LayerDrawable 是管理其他可绘制对象阵列的可绘制对象。列表中的每个可绘制对象按照列表的顺序绘制,列表中的最后一个可绘制对象绘于顶部。

每个可绘制对象由单一 < layer-list > 元素内的 < item > 元素表示。

语法

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</layer-list>

作用

layer-list,图层列表,可以帮助我们绘制一些特殊的图形。

部分实践

Line & Dot

layer-list

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="2dp"
android:right="2dp"
android:top="2dp">
<shape android:shape="rectangle">
<solid android:color="#1750ff" />
</shape>
</item>
<item android:gravity="right">
<shape android:shape="oval">
<solid android:color="#1750ff" />
<size
android:width="5dp"
android:height="5dp" />
</shape>
</item>
</layer-list>

use in layout

1
2
3
4
5
6
<View
android:layout_width="100dp"
android:layout_height="5dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="50dp"
android:background="@drawable/horizontal_line_dot" />

result

这里写图片描述

这里写图片描述

代码修改Drawable颜色

通过LayerDrawable类中的部分方法,我们可以拿到每一层的Drawable,这样针对不通层级的Drawable,我们可以根据自己的需要,在用户交互过程中执行修改等操作。

1
2
3
4
5
6
7
bt_change_color.setOnClickListener({
var background: LayerDrawable = horizontal_line_dot.background as LayerDrawable
for (index in 0..(background.numberOfLayers - 1)) {
var drawable: GradientDrawable = background.getDrawable(index) as GradientDrawable
drawable.setColor(Color.BLACK)
}
})

这里写图片描述

Shape

关于Shape的用法,请阅Shape
这里写图片描述

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×